package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;

import models.Mensagem;

public class DAOMensagem {

	public void inserir(Mensagem mensagem) {
		try {
			// Comando SQL que vai ser enviado ao banco
			String insert = "insert into mensagem(loginOrigem, loginDestino, assunto, mensagem) values(? ,? ,? , ?)";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(insert);
			// Seta parâmetros do comando SQL
			statement.setString(1, mensagem.loginOrigem);
			statement.setString(2, mensagem.loginDestino);
			statement.setString(3, mensagem.assunto);
			statement.setString(4, mensagem.mensagem);
			// Executa insert no banco de dados
			statement.executeUpdate();
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}

	}

	public void excluir(Mensagem m) {
		try {
			// Comando SQL que vai ser enviado ao banco
			String delete = "delete from mensagem where id = ?";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(delete);
			// Seta parâmetros do comando SQL
			statement.setInt(1, m.id);
			// Executa update no banco de dados
			statement.executeUpdate();
		} catch (SQLException e) {

			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}

	}

	public Set<Mensagem> porDestino(String destino) {
		Set<Mensagem> objs = new HashSet<Mensagem>();
		try {
			// Comando SQL que vai ser enviado ao banco
			String query = "select id, assunto, mensagem, loginDestino, loginOrigem from mensagem where loginDestino=?";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(query);
			// Seta parâmetros do comando SQL
			statement.setString(1, destino);
			// Execução do comando SQL e retorno como ResultSet
			ResultSet resultSet = statement.executeQuery();
			// Iteração no ResultSet
			while (resultSet.next()) {
				Mensagem obj = new Mensagem();
				obj.id = resultSet.getInt(1);
				obj.assunto = resultSet.getString(2);
				obj.mensagem = resultSet.getString(3);
				obj.loginDestino = resultSet.getString(4);
				obj.loginOrigem = resultSet.getString(5);
				objs.add(obj);
			}
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}
		return objs;
	}

}
